<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!--
            Promise实例化对象的状态只能从pending到fulfilled或者是pending到rejected
            不能从fulfilled到rejected或者反之都不行
    -->
    <!--
            then：指定用于得到成功value的成功回调和用于得到失败reason的失败的回调，并且将返回一个新的Promise实例化对象
            成功的状态：执行then方法的第一个回调函数
            失败的状态：执行then方法的第二个回调函数 
    
            then方法的返回值的Promise实例化对象的状态取决于回调函数中的内容
            如果返回为非Promise实例化对象，则得到一个是成功的Promise
            如果返回的是promise实例化对象，则Promise实例化对象的状态和结果值将直接影响result常量的状态和结果值
            如果为抛出异常，则新的Promise实例化对象(result)为失败的Promise
    -->
    <script>
        const p1 = new Promise((resolve, reject) => {

        })
        console.log(p1)
        //__proto__: Promise
        // [[PromiseState]]: "fulfilled"
        // [[PromiseResult]]: undefined
        const p2 = new Promise((resolve, reject) => {
            reject('error')
        })
        console.log(p2)
        /*
        __proto__: Promise
        [[PromiseState]]: "rejected"
        [[PromiseResult]]: "error"
        */
        const p3 = new Promise((resolve, reject) => {
            resolve('OK')
        })
        console.log(p3)
        /*
        __proto__: Promise
        [[PromiseState]]: "fulfilled"
        [[PromiseResult]]: "OK"
        */
        const result = p2.then(value => {
            //成功的回调
            throw '异常信息'
        }, reason => {
            // 失败的回调
            console.log(reason)//Promise基础认识.html:41 error
        })
        console.log(result)//__proto__: Promise
        // [[PromiseState]]: "fulfilled"
        // [[PromiseResult]]: undefined
        const reason2 = p3.then()
        console.log(reason2)
        //Promise {<pending>}
        // __proto__: Promise
        // [[PromiseState]]: "fulfilled"
        // [[PromiseResult]]: "OK"
    </script>
</body>

</html>